草庐IT

Java HashMap 调整大小

全部标签

c++ - QTabWidget 大小取决于当前 Tab

我有一个QTabWidget,它包含不同高度的小部件(它们的宽度是固定的),但是,QTabWidget的默认实现选择最大的小部件高度作为自己的高度高度。我想知道是否有一种(可能快速)方法可以根据其当前选项卡更改QTabWidget的大小,以便在显示较小的选项卡时节省空间。 最佳答案 您可以将显示的小部件的大小策略设置为QSizePolicy::Preferred,将其他的设置为QSizePolicy::Ignored。之后调用adjustSize来更新尺寸。例如,您可以将QTabWidget的currentChanged信号连接到插

c++ - 连续调用 RegGetValue 会为同一字符串返回两种不同的大小

在某些代码中,我使用了Win32RegGetValue()从注册表中读取字符串的API。我两次调用上述API:第一次调用的目的是获得合适的大小,以便为字符串分配目标缓冲区。第二次调用从注册表中读取字符串到该缓冲区中。奇怪的是,我发现RegGetValue()在两次调用之间返回了不同大小的值。特别是,第二次调用返回的大小值比第一次调用小两个字节(相当于一个wchar_t)。值得注意的是,与实际字符串长度兼容的大小值是第二次调用返回的值(这个对应实际字符串长度,包括终止NUL).但我不明白为什么第一次调用返回的大小比那个大两个字节(一个wchar_t)。附上程序输出截图和Win32C++可

c++ - 固定大小的容器到可变参数模板参数列表的转换

我必须调用一个可变模板函数,它可以接受任意数量的参数。templatevoidf(Args&...args);我想写一个小的包装函数,这样我就可以用固定大小的容器(如std::array)中包含的N个相同类型的参数调用f。目标是写类似的东西std::arrayarr={1,2,3};wrapper(arr);//callsf(1,2,3);我尝试使用初始化列表和std::forward的某种组合,但无济于事。有没有办法实现我想要的? 最佳答案 如果您的编译器支持C++14,您可以按以下方式进行:templatevoidf(Args&

c++ - 这个大小是如何计算的?

5.1.1/2规定:Thekeywordthisnamesapointertotheobjectforwhichanon-staticmemberfunction(9.3.2)isinvokedoranon-staticdatamember’sinitializer(9.2)isevaluated.和:Unliketheobjectexpressioninothercontexts,*thisisnotrequiredtobeofcompletetypeforpurposesofclassmemberaccess(5.2.5)outsidethememberfunctionbody.以

c++ - for range 循环如何推断普通数组大小

考虑这个片段:#includeintmain(){ints[6]{0,1,2,3,4,5};for(auto&&i:s){std::cout这可以在g++和clang++下顺利编译和运行。它在许多帖子中被认为是理所当然的(例如here和here),但我不清楚编译器如何正确推断forrange中数组的大小没有迭代器的类型。任何人都可以回答或添加指向引用的链接吗? 最佳答案 根据工作草案[6.5.4/1]:Therange-basedforstatementfor(for-range-declaration:for-range-init

c++ - 与常规枚举相比,C++ 枚举结构的大小是否更大?

与常规枚举相比,C++枚举结构(类)的大小是否更大?即,假设它们枚举相同的确切数据,什么会转化为更多字节的指令代码?我正在嵌入式环境中开发,这个问题很重要。我喜欢使用枚举结构允许的类型安全和作用域,但不会以代码膨胀为代价。 最佳答案 没有。语义上的差异由编译器管理,因为它只与类型系统有关。没有理由需要更多存储空间或需要更多说明。您可以使用sizeof轻松检查您的实际类型。但是,我应该注意,C++不保证任何此类类型的布局,只是说共享相同底层类型的两个枚举类型是“布局兼容的”([C++14:7.2/9]).

c++ - c++ 在哪里存储固定大小数组的大小?

此问题是Declaringarrayofint的后续问题考虑以下程序:#include#includeintmain(){intx[10];std::coutsizeof(x)打印40(总大小),sizeof(y)打印8(指针大小)看起来很有趣,对我来说intx[10]与y没有什么不同,只是它位于堆栈中。c++实际上在哪里存储了x的大小?c++是否从堆栈中获取它?或者固定大小的数组在内部被视为具有大小的结构? 最佳答案 不需要存储数组的大小,编译器本身知道它有多大,因为它是类型的一部分。当您像示例中的y那样动态分配数组时,数组的大小

c++ - 并行 vector 调整大小不加速

我必须使用8个处理器。我想按如下方式进行并行调整大小:vector>test;test.resize(10000);#pragmaompparallelnum_threads(8){#pragmaompforfor(inti=0;i我注意到该程序并没有使用100%的处理器能力——它只使用了15%。当我更改代码时vector>test;test.resize(1000000);#pragmaompparallelnum_threads(8){#pragmaompforfor(inti=0;i程序使用了大约60%的处理器能力。我不明白这种现象——我希望它在这两种情况下都能使用100%的处理

c++ - 在将大小较大的 vector move 到容量较小的 vector 之前,是否可以通过使用 reserve() 来提高代码性能?

如果这个问题不完整、不清楚或重复(这是我的第一个问题),请提前道歉。在研究move语义和为我的OOP类(class)做一个小项目时,我偶然发现了一个我自己无法回答的问题。据我所知std::move()通过将l值转换为r值来工作,但假设我们将一个包含很多元素的vectormove到容量为1的第二个vector中。我可以使用reserve()避免由于std::move()将r值move到第二个vector中,第二个vector的大量自动内存重新分配或者使用reserve()没有效果?可以在下面找到我的问题的简单实现。#include#include#includeintmain(){std

c++ - 如果 `atomic<T>` 是无锁的并且大小与 `T` 相同,内存布局是否相同?

Thisquestionhere表示std::atomic通常应该与T具有相同的大小,而对于x86、x64和ARM上的gcc、clang和msvc,情况确实如此。在std::atomic的实现中对于某些类型总是无锁T,它的内存布局是否保证与T的内存布局相同??std::atomic是否有任何额外的特殊要求?,比如对齐? 最佳答案 在查看[atomics.types.generic]时,您链接的答案部分引用了该答案,关于对齐的唯一评论是您之前看到的注释:Note:Therepresentationofanatomicspecializ